//
//  DataProcessing.m
//  bleDemo
//
//  Created by zt on 2020/5/16.
//  Copyright © 2020 XB. All rights reserved.
//

#import "DataProcessing.h"

@implementation DataProcessing

// 如果是运动秀的设备返回运动的设备
// 其他类型返回其他设备
+ (BleDevice *(^)(BleDevice *))filterDevice {
    return ^BleDevice * (BleDevice *device) {
        // 设备过滤规则
        // 1先通过设备名字来过滤，不拿那个为空、名字前缀必须是'FS-'
        // 2没有广告数据，也过滤掉
        // 3广播数据长度不合要求，也过滤掉
        // 4检验CRC不合要求，过滤掉
        NSDictionary *advertisementData = device.advertisementData;
        CBPeripheral *peripheral = device.peripheral;
//        NSMutableDictionary *dict = [NSMutableDictionary new];
        NSData * adverdata = advertisementData[@"kCBAdvDataManufacturerData"];
        NSString *devicename = peripheral.name;
        if (![devicename hasPrefix:DEVICE_NAME_FREFIX] || // 外设名字前缀不是 'FS-'
            kIsEmptyStr(devicename) || // 外设的名字为空
            !advertisementData || // 没有广播包
            [adverdata length] != DEVICE_ADVERDATA_LENGTH ) { // 广播包为空
//            PLog(@"这个不是我们要的设备");
        }
        Byte * datastr =  (Byte *)[adverdata bytes];
        // 校验CRC不符合要求，这个也要过滤掉
        unsigned int crccheck = datastr[0];
        for (int i = 0; i < 11; i++) {
            crccheck = ((crccheck^datastr[i + 1]) & 0xff);
        }
        if (crccheck != 0) {
            return nil;
        }
        // 可以走到这里，说明已经是我们要的设备了
//        unsigned int model = [self readUInt:datastr];
//        model = model & 0xffff;
//        // 类型
//        unsigned int type = (int) model / 268435456;
//        //设备序列号
//        unsigned int serial = [self readUInt:datastr + 4];
//        PLog(@"名字%@ 类型%d 型号%d  系列号%d", peripheral.name, type, model, serial);
//        [item setValue:@(1) forKey:IS_FITSHOW_DEVICE];
//        [item setValue:@(model) forKey:deviceID];
//        [item setValue:@(serial) forKey:serialNum];
//        [item setValue:@(type) forKey:deviceType];
        // 是运动秀的设备，
//        FSDevice *fs = [[FSDevice alloc] initWithDevice:device];
        
        

        return nil;
    };
}


@end
